ã¢ãã³ããã°ã©ãã³ã°èšèªã«ãããreadonlyåãšã€ãã¥ãŒã¿ããªãã£åŒ·å¶ãã¿ãŒã³ãæ¢æ±ããŸããããå®å šã§ä¿å®ããããã³ãŒãã®ããã«æŽ»çšããæ¹æ³ãåŠã³ãŸãããã
ReadonlyåïŒã¢ãã³ããã°ã©ãã³ã°ã«ãããã€ãã¥ãŒã¿ããªãã£åŒ·å¶ãã¿ãŒã³
ãœãããŠã§ã¢éçºã®é²åãç¶ããç¶æ³ã«ãããŠãããŒã¿ã®æŽåæ§ã確ä¿ããæå³ããªã倿Žãé²ãããšã¯æéèŠã§ããã€ãã¥ãŒã¿ããªãã£ãã€ãŸãããŒã¿ã¯äœæåŸã«å€æŽãããªãã¹ãã§ãããšããååã¯ããããã®èª²é¡ã«å¯Ÿãã匷åãªè§£æ±ºçãæäŸããŸããå€ãã®ã¢ãã³ããã°ã©ãã³ã°èšèªã§å©çšå¯èœãªreadonlyåã¯ãã³ã³ãã€ã«æã«ã€ãã¥ãŒã¿ããªãã£ã匷å¶ããã¡ã«ããºã ãæäŸããããå ç¢ã§ä¿å®ããããã³ãŒãããŒã¹ã«ã€ãªãããŸãããã®èšäºã§ã¯ãreadonlyåã®æŠå¿µãããŸããŸãªã€ãã¥ãŒã¿ããªãã£åŒ·å¶ãã¿ãŒã³ãæ¢æ±ãããããã®äœ¿çšæ³ãšå©ç¹ãäŸç€ºããããã«ãããŸããŸãªããã°ã©ãã³ã°èšèªã«ãããå®è·µçãªäŸãæäŸããŸãã
ã€ãã¥ãŒã¿ããªãã£ãšã¯äœãããããŠãªãéèŠãªã®ãïŒ
ã€ãã¥ãŒã¿ããªãã£ã¯ãã³ã³ãã¥ãŒã¿ãµã€ãšã³ã¹ã«ãããåºæ¬çãªæŠå¿µã§ãããç¹ã«é¢æ°åããã°ã©ãã³ã°ã«é¢é£ããããŸããäžå€ãªããžã§ã¯ããšã¯ããã®ç¶æ ãäœæåŸã«å€æŽã§ããªããªããžã§ã¯ãã®ããšã§ããããã¯ãäžå€ãªããžã§ã¯ããåæåããããšããã®å€ã¯ç涯äžå®ã§ããããšãæå³ããŸãã
ã€ãã¥ãŒã¿ããªãã£ã®å©ç¹ã¯æ°å€ããããŸãã
- è€éæ§ã®è»œæžïŒäžå€ããŒã¿æ§é ã¯ãã³ãŒãã®æšè«ãåçŽåããŸãããªããžã§ã¯ãã®ç¶æ ã¯äºæãã倿Žãããããšããªãããããã®åäœãçè§£ãäºæž¬ããããšã容æã«ãªããŸãã
- ã¹ã¬ããã»ãŒããã£ïŒã€ãã¥ãŒã¿ããªãã£ã¯ããã«ãã¹ã¬ããç°å¢ã«ãããè€éãªåæã¡ã«ããºã ã®å¿ èŠæ§ãæé€ããŸããäžå€ãªããžã§ã¯ãã¯ãç«¶åç¶æ ãããŒã¿ç Žæã®ãªã¹ã¯ãªãã«ãã¹ã¬ããéã§å®å šã«å ±æã§ããŸãã
- ãã£ãã·ã³ã°ãšã¡ã¢åïŒäžå€ãªããžã§ã¯ãã¯ããã£ãã·ã³ã°ãšã¡ã¢åã®åªããåè£ã§ããç¶æ ã¯æ±ºããŠå€æŽãããªããããããããå«ãèšç®çµæããå€ãããŒã¿ã®ãªã¹ã¯ãªãã«å®å šã«ãã£ãã·ã¥ããŠåå©çšã§ããŸãã
- ãããã°ãšç£æ»ïŒã€ãã¥ãŒã¿ããªãã£ã¯ãããã°ã容æã«ããŸãããšã©ãŒãçºçããå Žåãããã°ã©ã ã®ä»ã®å Žæã§ããŒã¿ã誀ã£ãŠå€æŽãããŠããªãããšã確信ã§ããŸããããã«ãã€ãã¥ãŒã¿ããªãã£ã¯ãæéã®çµéãšãšãã«ããŒã¿ã®å€æŽãç£æ»ããã³è¿œè·¡ããããšã容æã«ããŸãã
- ãã¹ãã®ç°¡çŽ åïŒäžå€ããŒã¿æ§é ã䜿çšããã³ãŒãã®ãã¹ãã¯ããã¥ãŒããŒã·ã§ã³ã®å¯äœçšãå¿é ããå¿ èŠããªããããããç°¡åã§ããè€éãªãã¹ããã£ã¯ã¹ãã£ãã¢ãã¯ãªããžã§ã¯ããèšå®ããããšãªããèšç®ã®æ£ãããæ€èšŒããããšã«éäžã§ããŸãã
ReadonlyåïŒã€ãã¥ãŒã¿ããªãã£ã®ã³ã³ãã€ã«æä¿èšŒ
Readonlyåã¯ã倿°ãŸãã¯ãªããžã§ã¯ãããããã£ãåæå²ãåœãŠåŸã«å€æŽãããªãããšã宣èšããæ¹æ³ãæäŸããŸããã³ã³ãã€ã©ã¯ããã®å¶éã匷å¶ããæå³ããªãããŸãã¯æªæã®ãã倿Žãé²ããŸãããã®ã³ã³ãã€ã«æã®ãã§ãã¯ã¯ãéçºããã»ã¹ã®æ©ã段éã§ãšã©ãŒãæ€åºããã®ã«åœ¹ç«ã¡ãå®è¡æãã°ã®ãªã¹ã¯ã軜æžããŸãã
ããŸããŸãªããã°ã©ãã³ã°èšèªããreadonlyåãšã€ãã¥ãŒã¿ããªãã£ã«å¯ŸããŠããŸããŸãªã¬ãã«ã®ãµããŒããæäŸããŠããŸããHaskellãElmã®ãããªäžéšã®èšèªã¯æ¬è³ªçã«äžå€ã§ãããJavaãJavaScriptã®ãããªä»ã®èšèªã¯ãreadonly修食åãšã©ã€ãã©ãªãéããŠã€ãã¥ãŒã¿ããªãã£ã匷å¶ããã¡ã«ããºã ãæäŸããŸãã
èšèªã暪æããã€ãã¥ãŒã¿ããªãã£åŒ·å¶ãã¿ãŒã³
ããã€ãã®äººæ°ã®ããããã°ã©ãã³ã°èšèªã§ãreadonlyåãšã€ãã¥ãŒã¿ããªãã£ãã¿ãŒã³ãã©ã®ããã«å®è£ ãããŠããããèŠãŠã¿ãŸãããã
1. TypeScript
TypeScriptã¯ãã€ãã¥ãŒã¿ããªãã£ã匷å¶ããããã®ããã€ãã®æ¹æ³ãæäŸããŸãã
readonly修食åïŒreadonly修食åã¯ããªããžã§ã¯ããŸãã¯ã¯ã©ã¹ã®ããããã£ã«é©çšããŠãåæååŸã«ãããã®å€æŽãé²ãããšãã§ããŸãã
interface Point {
readonly x: number;
readonly y: number;
}
const p: Point = { x: 10, y: 20 };
// p.x = 30; // ãšã©ãŒ: 'x' ã¯èªã¿åãå°çšããããã£ã®ãã代å
¥ã§ããŸããã
ReadonlyãŠãŒãã£ãªãã£åïŒReadonly<T>ãŠãŒãã£ãªãã£åã¯ããªããžã§ã¯ãã®ãã¹ãŠã®ããããã£ã readonly ã«ããããã«äœ¿çšã§ããŸãã
interface Person {
name: string;
age: number;
}
const person: Readonly<Person> = { name: "Alice", age: 30 };
// person.age = 31; // ãšã©ãŒ: 'age' ã¯èªã¿åãå°çšããããã£ã®ãã代å
¥ã§ããŸããã
ReadonlyArrayåïŒReadonlyArray<T>åã¯ãé åã倿Žã§ããªãããšãä¿èšŒããŸããpushãpopãspliceãªã©ã®ã¡ãœããã¯ReadonlyArrayã§ã¯å©çšã§ããŸããã
const numbers: ReadonlyArray<number> = [1, 2, 3];
// numbers.push(4); // ãšã©ãŒ: å 'readonly number[]' ã«ã¯ãããã㣠'push' ãååšããŸããã
äŸïŒäžå€ããŒã¿ã¯ã©ã¹
class ImmutablePoint {
private readonly _x: number;
private readonly _y: number;
constructor(x: number, y: number) {
this._x = x;
this._y = y;
}
get x(): number {
return this._x;
}
get y(): number {
return this._y;
}
withX(newX: number): ImmutablePoint {
return new ImmutablePoint(newX, this._y);
}
withY(newY: number): ImmutablePoint {
return new ImmutablePoint(this._x, newY);
}
}
const point = new ImmutablePoint(5, 10);
const newPoint = point.withX(15); // æŽæ°ãããå€ãæã€æ°ããã€ã³ã¹ã¿ã³ã¹ãäœæããŸã
console.log(point.x); // åºåïŒ5
console.log(newPoint.x); // åºåïŒ15
2. C#
C# ã¯ãreadonly ããŒã¯ãŒããäžå€ããŒã¿æ§é ãªã©ãã€ãã¥ãŒã¿ããªãã£ã匷å¶ããããã®ããã€ãã®ã¡ã«ããºã ãæäŸããŸãã
readonlyããŒã¯ãŒãïŒreadonlyããŒã¯ãŒãã¯ãå®£èšæãŸãã¯ã³ã³ã¹ãã©ã¯ã¿ã§ã®ã¿å€ãå²ãåœãŠããããã£ãŒã«ãã宣èšããããã«äœ¿çšã§ããŸãã
public class Person {
private readonly string _name;
private readonly DateTime _birthDate;
public Person(string name, DateTime birthDate) {
this._name = name;
this._birthDate = birthDate;
}
public string Name { get { return _name; } }
public DateTime BirthDate { get { return _birthDate; } }
}
// 䜿çšäŸ
var person = new Person("Bob", new DateTime(1990, 1, 1));
// person._name = "Charlie"; // ãšã©ãŒ: readonly ãã£ãŒã«ãã«ä»£å
¥ã§ããŸãã
- äžå€ããŒã¿æ§é ïŒC# ã¯ã
System.Collections.Immutableåå空éã«äžå€ã³ã¬ã¯ã·ã§ã³ãæäŸããŸãããããã®ã³ã¬ã¯ã·ã§ã³ã¯ãã¹ã¬ããã»ãŒãã§ãåæå®è¡æäœã«å¹ççã«ãªãããã«èšèšãããŠããŸãã
using System.Collections.Immutable;
ImmutableList<int> numbers = ImmutableList.Create(1, 2, 3);
ImmutableList<int> newNumbers = numbers.Add(4);
Console.WriteLine(numbers.Count); // åºåïŒ3
Console.WriteLine(newNumbers.Count); // åºåïŒ4
- ã¬ã³ãŒãïŒC# 9 ã§å°å ¥ãããã¬ã³ãŒãã¯ãäžå€ããŒã¿åãäœæããããã®ç°¡æœãªæ¹æ³ã§ããã¬ã³ãŒãã¯ãçµã¿èŸŒã¿ã®ç䟡æ§ãšã€ãã¥ãŒã¿ããªãã£ãæã€å€ããŒã¹ã®åã§ãã
public record Point(int X, int Y);
Point p1 = new Point(10, 20);
Point p2 = p1 with { X = 30 }; // X ãæŽæ°ãããæ°ããã¬ã³ãŒããäœæããŸã
Console.WriteLine(p1); // åºåïŒPoint { X = 10, Y = 20 }
Console.WriteLine(p2); // åºåïŒPoint { X = 30, Y = 20 }
3. Java
Java ã«ã¯ TypeScript ã C# ã®ãããªçµã¿èŸŒã¿ã® readonly åã¯ãããŸããããæ³šææ·±ãèšèšãš final ãã£ãŒã«ãã®äœ¿çšã«ããã€ãã¥ãŒã¿ããªãã£ãéæã§ããŸãã
finalããŒã¯ãŒãïŒfinalããŒã¯ãŒãã¯ã倿°ãäžåºŠã ãå€ãå²ãåœãŠãããããšãä¿èšŒããŸãããã£ãŒã«ãã«é©çšãããšãåæååŸã«ãã£ãŒã«ããäžå€ã«ãªããŸãã
public class Circle {
private final double radius;
public Circle(double radius) {
this.radius = radius;
}
public double getRadius() {
return radius;
}
}
// 䜿çšäŸ
Circle circle = new Circle(5.0);
// circle.radius = 10.0; // ãšã©ãŒ: final 倿° radius ã«å€ã代å
¥ã§ããŸãã
- é²åŸ¡çã³ããŒïŒäžå€ã¯ã©ã¹å ã§å¯å€ãªããžã§ã¯ããæ±ãå Žåãé²åŸ¡çã³ããŒãäžå¯æ¬ ã§ããã³ã³ã¹ãã©ã¯ã¿åŒæ°ãšããŠå¯å€ãªããžã§ã¯ããåãåããšãããŸãã¯ã²ãã¿ãŒã¡ãœããããè¿ããšãã«ããããã®ã³ããŒãäœæããŸãã
import java.util.Date;
public final class Event {
private final Date eventDate;
public Event(Date date) {
this.eventDate = new Date(date.getTime()); // é²åŸ¡çã³ããŒ
}
public Date getEventDate() {
return new Date(eventDate.getTime()); // é²åŸ¡çã³ããŒ
}
}
//䜿çšäŸ
Date originalDate = new Date();
Event event = new Event(originalDate);
Date retrievedDate = event.getEventDate();
retrievedDate.setTime(0); //ååŸããæ¥ä»ã倿ŽããŸã
System.out.println("Original Date: " + originalDate); //å
ã®æ¥ã¯åœ±é¿ãåããŸãã
System.out.println("Retrieved Date: " + retrievedDate);
- äžå€ã³ã¬ã¯ã·ã§ã³ïŒJava Collections Framework ã¯ã
Collections.unmodifiableListãCollections.unmodifiableSetãCollections.unmodifiableMapã䜿çšããŠã³ã¬ã¯ã·ã§ã³ã®äžå€ãã¥ãŒãäœæããã¡ãœãããæäŸããŸãã
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class ImmutableListExample {
public static void main(String[] args) {
List<String> originalList = new ArrayList<>();
originalList.add("apple");
originalList.add("banana");
List<String> immutableList = Collections.unmodifiableList(originalList);
// immutableList.add("orange"); // UnsupportedOperationException ãã¹ããŒãããŸã
}
}
4. Kotlin
Kotlin ã¯ãã€ãã¥ãŒã¿ããªãã£ã匷å¶ããããã®ããã€ãã®æ¹æ³ãæäŸããããŒã¿æ§é ãèšèšããæ¹æ³ã«æè»æ§ããããããŸãã
valããŒã¯ãŒãïŒJava ã®finalãšåæ§ã«ãvalã¯èªã¿åãå°çšããããã£ã宣èšããŸããå²ãåœãŠããããšããã®å€ã¯å€æŽã§ããŸããã
data class Configuration(val host: String, val port: Int)
fun main() {
val config = Configuration("localhost", 8080)
// config.port = 9000 // ã³ã³ãã€ã«ãšã©ãŒ: val ã¯åå²ãåœãŠã§ããŸãã
println("Host: ${config.host}, Port: ${config.port}")
}
- ããŒã¿ã¯ã©ã¹ã®
copy()ã¡ãœããïŒKotlin ã®ããŒã¿ã¯ã©ã¹ã¯ãcopy()ã¡ãœãããèªåçã«æäŸããŸããããã«ãããã€ãã¥ãŒã¿ããªãã£ãç¶æããªãããããããã£ã倿Žãããæ°ããã€ã³ã¹ã¿ã³ã¹ãäœæã§ããŸãã
data class Person(val name: String, val age: Int)
fun main() {
val person1 = Person("Alice", 30)
val person2 = person1.copy(age = 31) // age ãæŽæ°ãããæ°ããã€ã³ã¹ã¿ã³ã¹ãäœæããŸã
println("Person 1: ${person1}")
println("Person 2: ${person2}")
}
- äžå€ã³ã¬ã¯ã·ã§ã³ïŒKotlin ã¯ã
ListãSetãMapãªã©ã®äžå€ã³ã¬ã¯ã·ã§ã³ã€ã³ã¿ãŒãã§ãŒã¹ãæäŸããŸããlistOfãsetOfãmapOfãªã©ã®ãã¡ã¯ããªé¢æ°ã䜿çšããŠäžå€ã³ã¬ã¯ã·ã§ã³ãäœæã§ããŸãããã¥ãŒã¿ãã«ã³ã¬ã¯ã·ã§ã³ã®å Žåã¯ãmutableListOfãmutableSetOfãmutableMapOfã䜿çšããŸããããããã¯äœæåŸã«ã€ãã¥ãŒã¿ããªãã£ã匷å¶ããªãããšã«æ³šæããŠãã ããã
fun main() {
val numbers: List<Int> = listOf(1, 2, 3)
//numbers.add(4) // ã³ã³ãã€ã«ãšã©ãŒ: List ã«ã¯ add ãå®çŸ©ãããŠããŸãã
println(numbers)
val mutableNumbers = mutableListOf(1,2,3) // äœæåŸã«å€æŽã§ããŸã
mutableNumbers.add(4)
println(mutableNumbers)
val readOnlyNumbers: List<Int> = mutableNumbers // ãã ãåã¯ãŸã ãã¥ãŒã¿ãã«ã§ãïŒ
// readOnlyNumbers.add(5) // ã³ã³ãã€ã©ã¯ãããé²ããŸã
println(mutableNumbers) // ãã ãå
ã®ãªã¹ãã¯åœ±é¿ãåããŸã
}
äŸïŒããŒã¿ã¯ã©ã¹ãšäžå€ãªã¹ãã®çµã¿åãã
data class Order(val orderId: Int, val items: List<String>)
fun main() {
val order1 = Order(1, listOf("Laptop", "Mouse"))
val newItems = order1.items + "Keyboard" // æ°ãããªã¹ããäœæããŸã
val order2 = order1.copy(items = newItems)
println("Order 1: ${order1}")
println("Order 2: ${order2}")
}
5. Scala
Scala ã¯ã€ãã¥ãŒã¿ããªãã£ãã³ã¢ååãšããŠæšé²ããŠããŸããèšèªã¯çµã¿èŸŒã¿ã®äžå€ã³ã¬ã¯ã·ã§ã³ãæäŸããäžå€å€æ°ã宣èšããããã« val ã®äœ¿çšã奚å±ããŠããŸãã
valããŒã¯ãŒãïŒScala ã§ã¯ãvalã¯äžå€å€æ°ã宣èšããŸããå²ãåœãŠããããšããã®å€ã¯å€æŽã§ããŸããã
object ImmutableExample {
def main(args: Array[String]): Unit = {
val message = "Hello, Scala!"
// message = "Goodbye, Scala!" // ãšã©ãŒ: val ãžã®åå²ãåœãŠ
println(message)
}
}
- äžå€ã³ã¬ã¯ã·ã§ã³ïŒScala ã®æšæºã©ã€ãã©ãªã¯ãããã©ã«ãã§äžå€ã³ã¬ã¯ã·ã§ã³ãæäŸããŸãããããã®ã³ã¬ã¯ã·ã§ã³ã¯éåžžã«å¹ççã§ãäžå€æäœã«æé©åãããŠããŸãã
object ImmutableListExample {
def main(args: Array[String]): Unit = {
val numbers = List(1, 2, 3)
// numbers += 4 // ãšã©ãŒ: List[Int] ã«ã¯å€ += ããããŸãã
val newNumbers = numbers :+ 4 // 4 ã远å ãããæ°ãããªã¹ããäœæããŸã
println(s"Original list: $numbers")
println(s"New list: $newNumbers")
}
}
- ã±ãŒã¹ã¯ã©ã¹ïŒScala ã®ã±ãŒã¹ã¯ã©ã¹ã¯ããã©ã«ãã§äžå€ã§ãããããã¯ãåºå®ãããããããã£ã»ãããæã€ããŒã¿æ§é ã衚ãããã«ãã䜿çšãããŸãã
case class Address(street: String, city: String, postalCode: String)
object CaseClassExample {
def main(args: Array[String]): Unit = {
val address1 = Address("123 Main St", "Anytown", "12345")
val address2 = address1.copy(city = "New City") // city ãæŽæ°ãããæ°ããã€ã³ã¹ã¿ã³ã¹ãäœæããŸã
println(s"Address 1: $address1")
println(s"Address 2: $address2")
}
}
ã€ãã¥ãŒã¿ããªãã£ã®ãã¹ããã©ã¯ãã£ã¹
readonlyåãšã€ãã¥ãŒã¿ããªãã£ã广çã«æŽ»çšããããã«ããããã®ãã¹ããã©ã¯ãã£ã¹ãæ€èšããŠãã ããã
- äžå€ããŒã¿æ§é ãåªå ããïŒå¯èœãªéããå¯å€ããŒã¿æ§é ãããäžå€ããŒã¿æ§é ãéžæããŠãã ãããããã«ãããæå³ããªã倿Žã®ãªã¹ã¯ã軜æžãããã³ãŒãã®æšè«ãåçŽåãããŸãã
- Readonly 修食åã䜿çšããïŒåæååŸã«å€æŽãããªããªããžã§ã¯ãããããã£ããã³å€æ°ã«ã¯ãreadonly 修食åãé©çšããŸããããã«ãããã€ãã¥ãŒã¿ããªãã£ã®ã³ã³ãã€ã«æä¿èšŒãåŸãããŸãã
- é²åŸ¡çã³ããŒïŒäžå€ã¯ã©ã¹å ã§å¯å€ãªããžã§ã¯ããæ±ãå Žåã¯ãåžžã«é²åŸ¡çã³ããŒãäœæããŠãå€éšã®å€æŽããªããžã§ã¯ãã®å éšç¶æ ã«åœ±é¿ãäžããã®ãé²ããŸãã
- ã©ã€ãã©ãªãæ€èšããïŒäžå€ããŒã¿æ§é ãšé¢æ°åããã°ã©ãã³ã°ãŠãŒãã£ãªãã£ãæäŸããã©ã€ãã©ãªãæ¢çŽ¢ããŸãããããã®ã©ã€ãã©ãªã¯ãäžå€ãã¿ãŒã³ã®å®è£ ãç°¡çŽ åããã³ãŒãã®ä¿å®æ§ãåäžãããããšãã§ããŸãã
- ããŒã ãæè²ããïŒããŒã ãã€ãã¥ãŒã¿ããªãã£ã®ååãš readonlyåã®äœ¿çšã®å©ç¹ãçè§£ããŠããããšã確èªããŠãã ãããããã«ãããããŒã¿æ§é ã®èšèšãšã³ãŒãã®å®è£ ã«ã€ããŠæ å ±ã«åºã¥ããæ±ºå®ãäžãããšãã§ããŸãã
- èšèªåºæã®æ©èœãçè§£ããïŒåèšèªã¯ãã€ãã¥ãŒã¿ããªãã£ã衚çŸããã³åŒ·å¶ããããã®ãããã«ç°ãªãæ¹æ³ãæäŸããŸããã¿ãŒã²ããèšèªãæäŸããããŒã«ãšãã®å¶éãååã«çè§£ããŠãã ãããããšãã°ãJava ã§ã¯ãå¯å€ãªããžã§ã¯ããå«ã
finalãã£ãŒã«ãã¯ããªããžã§ã¯ãèªäœãäžå€ã«ããã®ã§ã¯ãªããåç §ã®ã¿ãäžå€ã«ããŸãã
å®äžçã®ã¢ããªã±ãŒã·ã§ã³
ã€ãã¥ãŒã¿ããªãã£ã¯ãããŸããŸãªå®äžçã®ã·ããªãªã§ç¹ã«äŸ¡å€ããããŸãã
- åæå®è¡ïŒãã«ãã¹ã¬ããã¢ããªã±ãŒã·ã§ã³ã§ã¯ãã€ãã¥ãŒã¿ããªãã£ã¯ããã¯ããã®ä»ã®åæããªããã£ãã®å¿ èŠæ§ãæé€ããåæå®è¡ããã°ã©ãã³ã°ãåçŽåããããã©ãŒãã³ã¹ãåäžãããŸããéèååŒåŠçã·ã¹ãã ãæ€èšããŠãã ãããäžå€ã®ãã©ã³ã¶ã¯ã·ã§ã³ãªããžã§ã¯ãã¯ãããŒã¿ç Žæã®ãªã¹ã¯ãªãã«å®å šã«åæã«åŠçã§ããŸãã
- ã€ãã³ããœãŒã·ã³ã°ïŒã€ãã¥ãŒã¿ããªãã£ã¯ãã¢ããªã±ãŒã·ã§ã³ã®ç¶æ ãäžå€ã€ãã³ãã®ã·ãŒã±ã³ã¹ã«ãã£ãŠæ±ºå®ãããã¢ãŒããã¯ãã£ãã¿ãŒã³ã§ããã€ãã³ããœãŒã·ã³ã°ã®åºç€ã§ããåã€ãã³ãã¯ã¢ããªã±ãŒã·ã§ã³ã®ç¶æ ãžã®å€æŽã衚ããçŸåšã®ç¶æ ã¯ã€ãã³ããåçããããšã«ãã£ãŠåæ§ç¯ã§ããŸããGit ã®ãããªããŒãžã§ã³ç®¡çã·ã¹ãã ãèããŠãã ãããåã³ãããã¯ã³ãŒãããŒã¹ã®äžå€ã¹ãããã·ã§ããã§ãããã³ãããã®å±¥æŽã¯æéã®çµéãšãšãã«ã³ãŒãã®é²åã衚ããŸãã
- ããŒã¿åæïŒããŒã¿åæããã³æ©æ¢°åŠç¿ã§ã¯ãã€ãã¥ãŒã¿ããªãã£ã«ãããããŒã¿ãåæãã€ãã©ã€ã³å šäœã§äžè²«ããç¶æ ã«ä¿ãããŸããããã«ãããæå³ããªã倿Žãçµæãæªããã®ãé²ããŸããããšãã°ãç§åŠã·ãã¥ã¬ãŒã·ã§ã³ã§ã¯ãäžå€ããŒã¿æ§é ã«ãããã·ãã¥ã¬ãŒã·ã§ã³çµæãåçŸå¯èœã§ããã誀ã£ãããŒã¿å€æŽã®åœ±é¿ãåããªãããšãä¿èšŒãããŸãã
- Web éçºïŒReact ã Redux ãªã©ã®ãã¬ãŒã ã¯ãŒã¯ã¯ãç¶æ 管çã®ããã«ã€ãã¥ãŒã¿ããªãã£ã«å€§ããäŸåããŠãããããã©ãŒãã³ã¹ãåäžãããã¢ããªã±ãŒã·ã§ã³ã®ç¶æ 倿Žãæšè«ããããããŠããŸãã
- ãããã¯ãã§ãŒã³æè¡ïŒãããã¯ãã§ãŒã³ã¯æ¬è³ªçã«äžå€ã§ããããŒã¿ããããã¯ã«æžã蟌ãŸãããšã倿Žã§ããŸãããããã«ããããããã¯ãã§ãŒã³ã¯ãããŒã¿ã®æŽåæ§ãšã»ãã¥ãªãã£ãæåªå ãããã¢ããªã±ãŒã·ã§ã³ïŒæå·é貚ããµãã©ã€ãã§ãŒã³ç®¡çã·ã¹ãã ãªã©ïŒã«æé©ã«ãªããŸãã
çµè«
Readonlyåãšã€ãã¥ãŒã¿ããªãã£ã¯ãããå®å šã§ãä¿å®ãããããå ç¢ãªãœãããŠã§ã¢ãæ§ç¯ããããã®åŒ·åãªããŒã«ã§ããã€ãã¥ãŒã¿ããªãã£ã®ååãæ¡çšããreadonly 修食åãæŽ»çšããããšã«ãããéçºè ã¯è€éæ§ã軜æžããã¹ã¬ããã»ãŒããã£ãåäžããããããã°ãç°¡çŽ åã§ããŸããããã°ã©ãã³ã°èšèªãé²åãç¶ããã«ã€ããŠãã€ãã¥ãŒã¿ããªãã£ã匷å¶ããããã®ããã«æŽç·Žãããã¡ã«ããºã ãç»å ŽããããšãæåŸ ãããã¢ãã³ãœãããŠã§ã¢éçºã®ããã«äžå¯æ¬ ãªéšåã«ãªãã§ãããã
ãã®èšäºã§è°è«ãããæŠå¿µãšãã¿ãŒã³ãçè§£ãé©çšããããšã«ãããã€ãã¥ãŒã¿ããªãã£ã®å©ç¹ã掻çšããããä¿¡é Œæ§ãé«ãã¹ã±ãŒã©ãã«ãªã¢ããªã±ãŒã·ã§ã³ãäœæã§ããŸãã